package cn.jtfadmin.core.modules.quartz.service;

import cn.jtfadmin.core.modules.quartz.domain.dto.JobAddPDTO;
import cn.jtfadmin.core.modules.quartz.domain.dto.JobModelRDTO;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;

import java.util.List;

/**
 * 定时器任务服务接口
 *
 * @author akfh
 * @since 1.0
 */
public interface QuartzService {

    Scheduler getScheduler();

    /**
     * 获取当前的定时任务
     *
     * @return
     */
    List<JobModelRDTO> list();

    /**
     * 增加一个新的定时任务
     *
     * @param jobAddPDTO
     * @return id
     */
    String addJob(JobAddPDTO jobAddPDTO);

    /**
     * 编辑一个定时任务
     *
     * @param jobAddPDTO
     */
    void editJob(JobAddPDTO jobAddPDTO);

    /**
     * 修改定时任务
     *
     * @param jobAddPDTO
     * @return
     * @throws SchedulerException
     */
    String rescheduleJob(JobAddPDTO jobAddPDTO);

    /**
     * 删除一个定时任务
     *
     * @param id
     */
    void deleteJob(String id);

    /**
     * 中断定时任务
     *
     * @param id
     */
    void pauseJob(String id);

    /**
     * 中断恢复
     *
     * @param id
     */
    void resumeJob(String id);

    /**
     * 校验任务是否存在
     *
     * @param id
     */
    boolean checkExistsJob(String id);

    void execute(String id);
}
